package com.yunkeji.api.user.service;

import com.yunkeji.api.auth.vo.ToLoginVo;
import com.yunkeji.api.user.bo.FriendsListBo;
import com.yunkeji.api.user.bo.UpdateUserInfoBo;
import com.yunkeji.api.user.vo.FriendsList;
import com.yunkeji.common.core.domain.PageQuery;
import com.yunkeji.common.core.domain.model.LoginUser;
import com.yunkeji.common.core.page.TableDataInfo;
import com.yunkeji.common.enums.app.SexEnum;
import com.yunkeji.dao.vo.AppUserWalletVo;
import com.yunkeji.dao.vo.UserVisitVo;

public interface AppUserInfoService {

    /**
     * 获取用户信息
     *
     * @author 老张
     * @param userId
     * @return
     */
    ToLoginVo getUserInfoById(Long userId);
    /**
     * 获取用户信息
     *
     * @author 老张
     * @param userId
     * @return
     */
    ToLoginVo getUserInfoByPlatformId(Long userId);

    /**
     * 更新一个用户
     *
     * @author 老张
     * @param bo
     * @return
     */
    void updateUserInfo(UpdateUserInfoBo bo);
    /**
     * 获取用户钱包
     *
     * @author 老张
     * @param userId
     * @return
     */
    AppUserWalletVo getWalletInfoById(Long userId);

    /**
     * 访客列表
     *
     * @author 老张
     * @param query
     * @return
     */
    TableDataInfo<UserVisitVo> visitList(PageQuery query);

    /**
     * 朋友列表-我关注的-关注我的
     *
     * @author 老张
     * @param bo
     * @return
     */
    TableDataInfo<FriendsList> friendsList(FriendsListBo bo);

    /**
     * 关注取消关注
     *
     * @author 老张
     */
    void focus(Long uid);

    /**
     * 亲密度排序
     *
     * @author 老张
     */
    TableDataInfo<FriendsList> sortedLoveValue(PageQuery pageQuery);
    /**
     * 获取对立的性别 男返回女 女返回男
     *
     * @param loginUser
     * @return
     */
    SexEnum getOppositeSex(LoginUser loginUser);
}
